#Dependencias

library(dplyr)
library(plotrix)
library(plotly)

1 Descripción de las variables

1.1 Características de las variables

Utilizaremos la base de datos de los deportistas de la NBA durante 2018 que contiene información como el equipo al que pertenecen, su posición, de qué universidad provienen, entre otras. Las variables que contiene la base de datos son: * Name: nombre de los jugadores
* Team: equipo al que pertenecen los jugadores
* Number: Número que utiliza cada jugador dentro del equipo
* Position: Posición en la que se desempeñan durante cada partido
* Age: Edad de los jugadores
* Height: Altura de los jugadores
* Weight: Peso de los jugadores
* College: Universidad de donde provienen
* Salary: Sueldo que reciben

datos <- read.csv(url("https://raw.githubusercontent.com/sivabalanb/Data-Analysis-with-Pandas-and-Python/master/nba.csv"))
datos<- datos[1:457,] #Eliminamos la ultima fila porque está en blanco
datos$Height <- gsub("-",".",datos$Height)
datos$Height <- as.numeric(datos$Height)
datos<- rename(datos,
                             Nombre          =            Name,
                             Equipo          =            Team,
                             Numero          =          Number,
                             Posicion        =        Position,
                             Edad            =             Age, 
                             Altura          =          Height,
                             Peso            =          Weight,
                             Universidad     =         College,
                             Salario         =          Salary)

attach(datos)

Se clasifican de la siguiente manera:

Variable Tipo Escala de medición
Nombre cualitativa nominal
Equipo cualitativa nominal
Número cualitativa nominal
Posición cualitativa nominal
Edad cuantitativa/discreta intervalo
Altura cuantitativa/continua razón
Peso cuantitativa/continua razón
Universidad cualitativa nominal
Salario cuantitativa/continua razón

2 Análisis descriptivo de variables cualitativas

Vamos a utilizar la variable College y realizaremos un análisis para saber de qué universidad hay más jugadores.

2.1 Tabla de frecuencias

tabla_universidad <- as.data.frame(table(Universidad))

tabla_frec_universidad <- transform(tabla_universidad[with(tabla_universidad, order(-tabla_universidad$Freq)),],
          FrecAq = cumsum(Freq),
          Rel = round(prop.table(Freq), 3),
          RelAc = round(cumsum(prop.table(Freq)), 3))
tabla_frec_universidad
##               Universidad Freq FrecAq   Rel RelAc
## 1                           84     84 0.184 0.184
## 47               Kentucky   22    106 0.048 0.232
## 28                   Duke   20    126 0.044 0.276
## 45                 Kansas   18    144 0.039 0.315
## 68         North Carolina   16    160 0.035 0.350
## 98                   UCLA   15    175 0.033 0.383
## 3                 Arizona   13    188 0.028 0.411
## 30                Florida   10    198 0.022 0.433
## 95                  Texas    9    207 0.020 0.453
## 91               Syracuse    8    215 0.018 0.470
## 22            Connecticut    7    222 0.015 0.486
## 100                   USC    7    229 0.015 0.501
## 109            Washington    7    236 0.015 0.516
## 33             Georgetown    6    242 0.013 0.530
## 36           Georgia Tech    6    248 0.013 0.543
## 53                    LSU    6    254 0.013 0.556
## 59               Michigan    6    260 0.013 0.569
## 60         Michigan State    6    266 0.013 0.582
## 108           Wake Forest    6    272 0.013 0.595
## 54              Marquette    5    277 0.011 0.606
## 72             Ohio State    5    282 0.011 0.617
## 90               Stanford    5    287 0.011 0.628
## 117             Wisconsin    5    292 0.011 0.639
## 41                Indiana    4    296 0.009 0.648
## 74         Oklahoma State    4    300 0.009 0.656
## 93              Tennessee    4    304 0.009 0.665
## 99                   UNLV    4    308 0.009 0.674
## 104             Villanova    4    312 0.009 0.683
## 2                 Alabama    3    315 0.007 0.689
## 5                Arkansas    3    318 0.007 0.696
## 14             California    3    321 0.007 0.702
## 20               Colorado    3    324 0.007 0.709
## 23              Creighton    3    327 0.007 0.716
## 32           Fresno State    3    330 0.007 0.722
## 52             Louisville    3    333 0.007 0.729
## 56               Maryland    3    336 0.007 0.735
## 57                Memphis    3    339 0.007 0.742
## 62               Missouri    3    342 0.007 0.748
## 65                 Nevada    3    345 0.007 0.755
## 69   North Carolina State    3    348 0.007 0.761
## 89             St. John's    3    351 0.007 0.768
## 96              Texas A&M    3    354 0.007 0.775
## 101                  Utah    3    357 0.007 0.781
## 4           Arizona State    2    359 0.004 0.786
## 9          Boston College    2    361 0.004 0.790
## 13                 Butler    2    363 0.004 0.794
## 17             Cincinnati    2    365 0.004 0.799
## 18                Clemson    2    367 0.004 0.803
## 25                 Dayton    2    369 0.004 0.807
## 37                Gonzaga    2    371 0.004 0.812
## 40               Illinois    2    373 0.004 0.816
## 58             Miami (FL)    2    375 0.004 0.821
## 64           Murray State    2    377 0.004 0.825
## 66             New Mexico    2    379 0.004 0.829
## 71             Notre Dame    2    381 0.004 0.834
## 76                 Oregon    2    383 0.004 0.838
## 77           Oregon State    2    385 0.004 0.842
## 79             Pittsburgh    2    387 0.004 0.847
## 81                 Purdue    2    389 0.004 0.851
## 84         Saint Joseph's    2    391 0.004 0.856
## 86           Saint Mary's    2    393 0.004 0.860
## 97       UC Santa Barbara    2    395 0.004 0.864
## 103            Vanderbilt    2    397 0.004 0.869
## 105              Virginia    2    399 0.004 0.873
## 106 Virginia Commonwealth    2    401 0.004 0.877
## 110      Washington State    2    403 0.004 0.882
## 114      Western Kentucky    2    405 0.004 0.886
## 6                  Baylor    1    406 0.002 0.888
## 7                 Belmont    1    407 0.002 0.891
## 8           Blinn College    1    408 0.002 0.893
## 10      Boston University    1    409 0.002 0.895
## 11          Bowling Green    1    410 0.002 0.897
## 12               Bucknell    1    411 0.002 0.899
## 15       Central Michigan    1    412 0.002 0.902
## 16             Charleston    1    413 0.002 0.904
## 19        Cleveland State    1    414 0.002 0.906
## 21         Colorado State    1    415 0.002 0.908
## 24               Davidson    1    416 0.002 0.910
## 26                 DePaul    1    417 0.002 0.912
## 27                Detroit    1    418 0.002 0.915
## 29     Eastern Washington    1    419 0.002 0.917
## 31          Florida State    1    420 0.002 0.919
## 34                Georgia    1    421 0.002 0.921
## 35          Georgia State    1    422 0.002 0.923
## 38                Harvard    1    423 0.002 0.926
## 39                Houston    1    424 0.002 0.928
## 42                   Iowa    1    425 0.002 0.930
## 43             Iowa State    1    426 0.002 0.932
## 44                  IUPUI    1    427 0.002 0.934
## 46           Kansas State    1    428 0.002 0.937
## 48                 Lehigh    1    429 0.002 0.939
## 49       Long Beach State    1    430 0.002 0.941
## 50    Louisiana-Lafayette    1    431 0.002 0.943
## 51         Louisiana Tech    1    432 0.002 0.945
## 55               Marshall    1    433 0.002 0.947
## 61              Minnesota    1    434 0.002 0.950
## 63         Morehead State    1    435 0.002 0.952
## 67          Norfolk State    1    436 0.002 0.954
## 70           Northeastern    1    437 0.002 0.956
## 73               Oklahoma    1    438 0.002 0.958
## 75           Old Dominion    1    439 0.002 0.961
## 78             Penn State    1    440 0.002 0.963
## 80             Providence    1    441 0.002 0.965
## 82           Rhode Island    1    442 0.002 0.967
## 83                  Rider    1    443 0.002 0.969
## 85            Saint Louis    1    444 0.002 0.972
## 87        San Diego State    1    445 0.002 0.974
## 88        St. Bonaventure    1    446 0.002 0.976
## 92                 Temple    1    447 0.002 0.978
## 94        Tennessee State    1    448 0.002 0.980
## 102           Utah Valley    1    449 0.002 0.982
## 107         Virginia Tech    1    450 0.002 0.985
## 111           Weber State    1    451 0.002 0.987
## 112        Westchester CC    1    452 0.002 0.989
## 113      Western Carolina    1    453 0.002 0.991
## 115      Western Michigan    1    454 0.002 0.993
## 116         Wichita State    1    455 0.002 0.996
## 118               Wyoming    1    456 0.002 0.998
## 119                Xavier    1    457 0.002 1.000

Con la tabla de frecuencias observamos que Kentucky con 22 jugadores es la universidad que tiene más alumnos en la NBA, seguida de la universidad de Duke con 20 jugadores. Aunque hay 84jugadores que no pertenecen a ninguna universidad o no tienen una registrada, pero solo representan el 18% de todos los jugadores, entonces decimos que el 82% de jugadores, es decir 373 jugadores, pertenecen a alguna universidad. También podemos observar que la mayoría de universidades cuentan con máximo 2 jugadores de la NBA, son pocas las universidades privilegiadas de aportar varios estudiantes a la NBA.

Ahora vamos a realizar el mismo análisis para la variable de posiciones

tabla_posicion <- as.data.frame(table(Posicion))
tabla_posicion <- transform(tabla_posicion,
                            FrecAq = cumsum(Freq),
                            Rel = round(prop.table(Freq), 3),
                            RelAc = round(cumsum(prop.table(Freq)), 3))
total <- data.frame(
  Posicion = as.factor("TOTAL"),
  Freq = sum(tabla_posicion$Freq),
  FrecAq = sum(tabla_posicion$Freq),
  Rel = sum(tabla_posicion$Rel),
  RelAc = sum(tabla_posicion$Rel)
)
total <- rbind(tabla_posicion,total)
total
##   Posicion Freq FrecAq   Rel RelAc
## 1        C   78     78 0.171 0.171
## 2       PF  100    178 0.219 0.389
## 3       PG   92    270 0.201 0.591
## 4       SF   85    355 0.186 0.777
## 5       SG  102    457 0.223 1.000
## 6    TOTAL  457    457 1.000 1.000

Observamos que la posición en la que más jugadores se desempeñan es SG (Shooting Guard), mientras que la posición que menos jugadores tiene es C (Center o Pivot), lo cual tiene sentido ya que en esta posición las hibilidades más importantes son el peso y la fuerza y la mayoría de jugadores que vemos en la NBA tienden a ser delgados y ligeros para tener mayor agilidad, aunque no es mucha la diferencia de jugadores que hay en esta posición comparada con las otras posiciones.

2.2 Análisis gráfico

universidad_plot <- plot_ly(tabla_posicion, labels = ~tabla_posicion$Posicion, values = tabla_posicion$Freq, type = 'pie')
universidad_plot <- universidad_plot %>% layout(title = 'Posiciones de los jugadores de la NBA')

universidad_plot

Análizando mediante una gráfica de pastel, podemos observar que se notan menos esas diferencias en la cantidad de jugadores para cada posición, ya que es muy baja como mencionamos anteriormente. La diferencia que hay entre la posición que tiene menos jugadores (C: 17%) y la que tiene más (SG: 22%) es del 5%, casi nada, por lo tanto podemos concluir que no hay diferencias estadísticamente significativas entre la cantidad de jugadores en cada una de las posiciones.

2.3 Estadísticos de resumen

3 Anális descriptivo de variables cuantitativas

3.1 Tabla de frecuencias

#Convertimos el tipo de variable Height de string a numérico para poder trabaja con ella.
tabla_altura <- as.data.frame(table(Altura)) #Frecuencias absolutas
tabla_altura <- transform(tabla_altura[with(tabla_altura, order(-tabla_altura$Freq)),],
                          FreqAc = cumsum(Freq),
                          FreqRel = round(prop.table(Freq), 3),
                          RelAc = round(cumsum(prop.table(Freq)), 3))
rbind(tabla_altura, c("", sum(tabla_altura$Freq),
      tabla_altura$FreqAc[nrow(tabla_altura)],
      sum(tabla_altura$FreqRel),tabla_altura$RelAc[nrow(tabla_altura)]))
## Warning in `[<-.factor`(`*tmp*`, ri, value = ""): invalid factor level, NA
## generated
##    Altura Freq FreqAc FreqRel RelAc
## 4     6.1   63     63   0.138 0.138
## 13    6.9   59    122   0.129 0.267
## 11    6.7   45    167   0.098 0.365
## 12    6.8   43    210   0.094  0.46
## 10    6.6   42    252   0.092 0.551
## 5    6.11   40    292   0.088 0.639
## 7     6.3   33    325   0.072 0.711
## 9     6.5   32    357    0.07 0.781
## 8     6.4   29    386   0.063 0.845
## 14      7   27    413   0.059 0.904
## 6     6.2   16    429   0.035 0.939
## 3       6   10    439   0.022 0.961
## 15    7.1    7    446   0.015 0.976
## 17    7.3    4    450   0.009 0.985
## 1    5.11    3    453   0.007 0.991
## 16    7.2    3    456   0.007 0.998
## 2     5.9    1    457   0.002     1
## 18   <NA>  457    457       1     1

Con base en la tabla anterior sabemos que la mayor cantidad de jugadores de la NBA tiene \(6.1\) pies de altura. Más exactamente el \(\%13.8\) del total de jugadores. Como el valor de la variable Height en el que se concentran más registros es único, podemos decir que la distibución es unimodal.

3.2 Análisis gráfico

altura_plot <- plot_ly(x = Altura, type = "box",
                       boxpoints = "all", jitter = 0.3,
                       name = "Altura")
altura_plot <- altura_plot %>% layout(title = "Altura de los jugadores de la NBA", colorway = '#3d3b72')
altura_plot

En la gráfica anterior se pueden observar tres jugadores con una altura mínima de \(5.11\) pies, lo cual tiene mucho sentido ya que es bien sabido que la mayoría de los jugadores de basquetbol son altos y como prueba de ésto, se puede apreciar que la dispersión de puntos es simétrica a la derecha, es decir, la concetración de alturas está en valores elevados.Los cuatro jugadores más altos miden \(7.3\) pies.

Además, \(25\%\) de los jugadores miden a lo más \(6.11\) pies y el \(\%75\) llegan a medir hasta \(6.8\) pies

3.3 Gráfica de la ojíva


4 El problema de comparación y asociación entre variables

Para esta sección usaremos las variables estatura, peso y posición.

4.1 Comparación estadística de las distintas cateogrías

Comenzaré por explicar un poco sobre qué significado tienen las etiquetas de las posiciones y un poco sobre la función de los jugadores en esta posición. Existen 5 posiciones la cuales a su vez se dividen en: posiciones interiores y posiciones exteriores.*

Posiciones exteriores

1. Point Guard (PG): Su función es dirigir y controlar el ritmo del partido. Es quien tiene el control del juego dentro de la cancha. Tiene las siguientes carácterísticas: * Visión periférica. * Capacidad de moverser entre las zonas. * Agilidad en pies y manos para defender.

2. Shooting Guard (SG) :Tiene las mismas características que el PG pero suele ser más anotador.

3. Small Forward (SF) : Tiene las siguientes carácterísticas: * Rápido para el contraataque. * Habilidoso a la hora de pentrar en situaciones uno contra uno. * Rebotador. * Preción al tirar.

Posciones interiores

4. Power Forward (PF): Tienen la función de rebotear en ataque y defensa, suelen jugar desde espacios interiores de media distancia o distancias cercanas.

5. Center (C): Domina el uso de su cuerpo para ganar espacios en la cancha y juega cerca de aro.

En la siguiente imagen se muestra las posciones que ocupan en la cancha según su número

Ahora que tenemos una idea de qué significan las etiquetas de las posiciones y en qué lugar de la cancha se ubican, haremos un histograma sobre estas posicones.

Posicion_plot <- plot_ly(tabla_posicion, 
                         x = ~Posicion, 
                         y = ~Freq, 
                         type = 'bar', 
                         text = ~Freq,
                         color = ~Posicion)

Posicion_plot <- Posicion_plot %>%
  layout(title = "Frecuencias de la posiciones",
         xaxis = list(title = "Posición"),
         yaxis = list(title = "Frecuencia"))

Posicion_plot

Según la gráfica de barras en las posiciones interiores (C y PF) tienen una diferencia notable entre la cantidad de jugadores,además la posición C es la que menos jugadores tiene y la posición PF es la segunda con más jugadores, haremos una prueba de proporsión para verificar esto.

tab_pos <- table(Posicion)
prop.test(x = c(tab_pos["C"],
                tab_pos["PF"]),
                n = c(400,400),
                conf.level = 0.95)
## 
##  2-sample test for equality of proportions with continuity correction
## 
## data:  c(tab_pos["C"], tab_pos["PF"]) out of c(400, 400)
## X-squared = 3, df = 1, p-value = 0.07
## alternative hypothesis: two.sided
## 95 percent confidence interval:
##  -0.11502  0.00502
## sample estimates:
## prop 1 prop 2 
##  0.195  0.250

Conclusión: como \(\alpha\) = 0.05 < p-value, no se rechaza la hipótesis nula. Es decir que no hay evidencia estadística suficiente para decir que la proporción entre las posiciones interiores son diferentes.


4.2 Análisis estadístico e inferencial

grupos <- plot_ly(x=datos$Peso[Posicion=="C"], type="box", name = "C" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="PF"], type="box", name = "PF" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="PG"], type="box", name = "PG" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="SF"], type="box", name = "SF" )
grupos <- grupos %>% add_trace(x=datos$Peso[Posicion=="SG"], type="box", name = "SG" )
grupos <- grupos %>% layout(title = "Posiciones según el peso de los jugadores")

grupos

En general se nota como las posiones interiores tienen a los jugadores de mayor peso y resalta la clase PG con los jugadores más ligeros,además ninguna de las clases tiene una distribución normal.

La clase SG tiene asimetría negativa y el brazo izquierdo más largo, esto indica que los jugadores en esta posición tienen un peso mayor a 209.5 libras y el resto aunque son menos tienden a ser notablemente más ligeros.

La clase SF tiene asimetría negativa y muy clara, en este caso el brazo más largo es el derecho aunque tiene un valor atípico en el lado inferior. La mayoría de los jugadores tienen un peso mayor a 225 libras y existen unos cuantos más delgados que el resto, incluso uno muy por debajo de los demás.

La clase PG tiene asimetría positiva y el brazo más largo es el izquierdo, es decir que la mayoría de los jugadores son muy delgados y solo unos tienen un peso mayor a 190 libras.

La clase PF tiene asimetría positiva, los brazos parecen tener el mismo tamaño y obsevamos un valor atípico en lado inferior, es decir varios jugadores en esta posición tienen un peso menor a 240 libras.

La clase C tiene asimetría positiva y los brazos tienen una magnitud similar aunque existe un jugador muy por encima del peso de los demás la mayoría tiene un peso menos a 250 libras.

Para finalizar podemos notar como los pesos van aumentando según la clase en el siguiente orden: PG, SG, SF, PF y C.

Hagamos una prueba de hipótesis para comparar las medianas de la clases PG y C, esto con el fin de corrobar que son diferentes.

wilcox.test(datos$Peso[Posicion=="PG"], datos$Peso[Posicion=="C"])
## 
##  Wilcoxon rank sum test with continuity correction
## 
## data:  datos$Peso[Posicion == "PG"] and datos$Peso[Posicion == "C"]
## W = 1, p-value <2e-16
## alternative hypothesis: true location shift is not equal to 0

Conclusión: Se rechaza la hipótesis nula, lo que significa que si existe evidencia estadística de que la clase PG es más ligera que la clae C.

4.3 Análisis de la asociación